package com.efuture.c3p0;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.sql.Connection;

/**
 * @ClassNAME  C3P0ConfigUse
 * @Description C3P0配置文件使用演示
 * @Author zhaoshanshan
 * @Date 2021/9/20 8:12 下午
 * @Version 1.0
 */
public class C3P0ConfigUse {

    public static void main(String[] args) {
        C3P0ConfigUse c3P0ConfigUse = new C3P0ConfigUse();
        //c3P0ConfigUse.testOne();
        c3P0ConfigUse.testTwo();
    }
    //使用c3p0-config.xml的默认配置
    private void testOne(){
        try{
            DataSource ds = new ComboPooledDataSource();
            Connection conn = null;
            for(int i =0;i<10;i++){//默认最大连接数为10
                conn = ds.getConnection();
                System.out.println(conn);//正常获取10个连接
            }

//            for(int i =0;i<11;i++){//默认最大连接数为10,如果去获取11个连接,中途没有归还连接，将会报错
//                conn = ds.getConnection();
//                System.out.println(conn);//正常获取10个连接
//            }

//            for(int i =0;i<11;i++){//默认最大连接数为10,如果去获取11个连接,中途归还连接，依然可以正常获得连接对象。
//                conn = ds.getConnection();
//                System.out.println(conn);//正常获取10个连接
//                if(i==5){
//                    conn.close();//归还连接
//                }
//            }

        }catch (Exception e){
            e.printStackTrace();
        }


    }
    //使用c3p0-config.xml的配置了名字的配置
    private void testTwo(){
        try{
            //指定配置的连接池名称
            DataSource ds = new ComboPooledDataSource("otherc3p0");
            Connection conn = null;
            for(int i= 0;i<8;i++){//该配置连接池默认最大为8
                conn = ds.getConnection();
                System.out.println(conn);
            }

        }catch (Exception e){
            e.printStackTrace();
        }

    }
}